home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #3 / Amiga Plus CD - 2002 - No. 03.iso / AmiSoft / Dev / E / Eviled.lha / slider.e < prev    next >
Encoding:
Text File  |  2003-02-01  |  1.8 KB  |  84 lines

  1. OPT MODULE
  2.  
  3. -> vslider working okey.
  4. -> hslider untested.
  5.  
  6. DEF g_kcol, g_fcol, g_bcol, g_sx, g_sy, g_sw, g_sh
  7.  
  8. DEF g_sv, g_kh
  9.  
  10. EXPORT PROC initVSlider(sx,sy,sw,sh,knobcol=1,fillcol=2,bordcol=1)
  11.    g_sx := sx
  12.    g_sy := sy
  13.    g_sw := sw
  14.    g_sh := sh
  15.    g_kcol := knobcol
  16.    g_fcol := fillcol
  17.    g_bcol := bordcol
  18.    g_kh := NIL
  19.    g_sv := NIL -> slider vert pos
  20. ENDPROC  
  21.  
  22. EXPORT PROC setVSlider(th,eh,tv)
  23.    -> knob hight
  24.    g_kh := Min(Max(g_sh * eh / Max(th,1), g_sw/2), g_sh) 
  25.    -> knob vert pos
  26.    g_sv := (g_sh-g_kh) * tv / Max(th-eh, 1)
  27. ENDPROC  
  28.  
  29. EXPORT PROC paintVSlider(rp)
  30.    DEF sx, sy, sw, sh, sm, kh_2
  31.  
  32.    sx := g_sx
  33.    sy := g_sy
  34.    sw := g_sw
  35.    sh := g_sh
  36.  
  37.    SetAPen(rp,g_bcol) ; RectFill(rp,sx, sy, sw+sx, sh+sy) -> borders
  38.    
  39.    sx := sx + 1
  40.    sy := sy + 1
  41.    sw := sw - 1
  42.    sh := sh 
  43.  
  44.    SetAPen(rp,g_fcol) ; RectFill(rp,sx, sy, sx+sw, sy+sh) -> fill
  45.  
  46.    kh_2 := g_kh / 2   
  47.    sm := sy + kh_2 + g_sv
  48.    
  49.    SetAPen(rp,g_kcol) ; RectFill(rp,sx,sm-kh_2,sx+sw,sm+kh_2) -> knob
  50.  
  51. ENDPROC
  52.  
  53. -> jan03
  54.  
  55. -> returns 0=outside / 1=page up / 2=page down / 3=on knob.
  56. EXPORT PROC vSliderHit(x, y)
  57.    /* outside ? */
  58.    IF x < (g_sx+1) THEN RETURN 0
  59.    IF x > (g_sx+g_sw) THEN RETURN 0
  60.    IF y < (g_sy) THEN RETURN 0
  61.    IF y > (g_sy+g_sh) THEN RETURN 0
  62.    /* above knob ? */
  63.    IF y < (g_sy+g_sv) THEN RETURN 1
  64.    /* below knob ? */
  65.    IF y > (g_sy+g_sv+g_kh) THEN RETURN 2
  66. ENDPROC 3 -> on it !
  67.  
  68. EXPORT PROC setVSliderMY(mouseY)
  69.    DEF ymin, ymax
  70.    ymin := g_sy+(g_kh/2)
  71.    ymax := g_sy+g_sh-(g_kh/2)
  72.    mouseY := Max(ymin,mouseY)
  73.    mouseY := Min(ymax,mouseY)
  74.    g_sv := mouseY - (g_sy+(g_kh/2))
  75. ENDPROC
  76.  
  77. EXPORT PROC getVSlider(th, txheight)
  78.    DEF thpixels, a, tvpixels, tv
  79.    thpixels := Mul(th,txheight) 
  80.    a := Div(thpixels,g_sh)
  81.    tvpixels := Mul(g_sv,a)
  82.    tv := Div(tvpixels,txheight)
  83. ENDPROC tv
  84.